/*
 * Copyright (C) 2020 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.android.tools.idea.appinspection.internal.process

import com.android.tools.idea.appinspection.inspector.api.process.DeviceDescriptor
import com.android.tools.idea.appinspection.inspector.api.process.ProcessDescriptor
import com.android.tools.profiler.proto.Common

/** A [ProcessDescriptor] implementation build using transport-related protos. */
data class TransportProcessDescriptor(
  override val device: DeviceDescriptor,
  override val abiCpuArch: String,
  override val name: String,
  override val packageName: String,
  override val isRunning: Boolean,
  override val pid: Int,
  override val streamId: Long,
) : ProcessDescriptor {
  constructor(
    stream: Common.Stream,
    process: Common.Process,
  ) : this(
    stream.device.toDeviceDescriptor(),
    process.abiCpuArch,
    process.name,
    process.packageName,
    process.state != Common.Process.State.DEAD,
    process.pid,
    stream.streamId,
  )
}
